--- id: TASK-001 title: 'Phase 1: go-git read layer + core repo views' status: "\U0001F3C1 Done" assignee: [] created_date: '2026-06-17 23:44' updated_date: '2026-06-18 00:24' labels: - feature dependencies: [] priority: high ordinal: 1000 --- ## Description Build internal/gitread (the only package touching go-git) plus internal/server handlers and templ templates for the core read views. Dynamic server: each request reads bare repos live off REPOS_PATH. Point at a local ./repos/*.git for dev. Unstyled HTML is fine here; styling is phase 3. ## Acceptance Criteria - [x] #1 go.mod initialized, deps added (go-git/v5, templ, chroma, goldmark, yaml.v3) - [x] #2 cmd/custard/main.go: flags/env (--repos, --addr), http.Server with graceful shutdown - [x] #3 internal/config resolves REPOS_PATH, SOFT_SERVE_HTTP, LISTEN_ADDR, BASE_URL - [x] #4 internal/gitread wraps go-git: list repos, refs, tree-at-ref, blob bytes, commit, log page - [x] #5 Routes + templ views: / (repo list), /r/, tree, blob, raw, log, commit, refs - [x] #6 stdlib net/http method+pattern mux; handlers never open repos directly